#include <GL/glut.h>
#include <stdio.h>
#include <math.h>

// Pi :P
#define PI 3.1415926

// numero de pontos que vou usar para desenhar a esfera
int np = 20;

void initGL()
{
  glClearColor(0.0f,0.0f,0.0f,0.0f);
}

// desenha a esferacircunferência em si
void desenha()
{
  int i;
  // escolhe a cor
  glColor3f(1.0,0.0,0.0); // RGB
  /* Aqui eu escolho o tipo de "lapis" que eu estou usando
     nesse tipo, o "line loop" significa que cada ponto que eu 
     desenhar será um novo ponto na mesa linha, em sequencia, como
     se tivesse 'ligando os pontos', e que o ponto final deverá
     ser ligado ao primeiro (por isso o 'LOOP'). */
  glBegin(GL_LINE_LOOP); 

  for(i = 0; i < np; i++)
    {
      /* Angulo que irá de 0 a 360° em radianos */
      float ang = (double) i*(2*PI)/np;
      glVertex2f(sin(ang),cos(ang)); /* 1 = sen(ang) + cos(ang) */
    }
  /* depois de terminar o desenho dou glEnd para ele saber 
     que desenhei o ultimo ponto */
  glEnd();
  /* Aqui eu troco a 'imagem antiga' pela 'imagem nova'
   Isso permite que eu faça movimento, etc*/
  glutSwapBuffers();
}

int main(int argc, char** argv)
{
  glutInit(&argc, argv); 
  glutInitDisplayMode(GLUT_RGB|GLUT_DOUBLE);
  /* Janela de 250px por 250px */
  glutInitWindowSize(250, 250);
  glutCreateWindow("Circunferencia");
  /* Passo o nome da função que desenha na tela */
  glutDisplayFunc( desenha );
  /* Inicio o OpenGL */
  initGL();
  /* Inicio o loop principal */
  glutMainLoop();
  return (0);
}
